package config

import (
	"fmt"
	"github.com/mitchellh/mapstructure"
	"os"
)
import "github.com/spf13/viper"

func GetConfig() *RocketMQConfig {
	configFile := "config.yaml"
	if FileIsExist(configFile) {
		// 生产环境可通过设置环境变量改变配置文件路径
		if configEnv := os.Getenv("ROCKET_EXP_CONFIG"); configEnv != "" {
			configFile = configEnv
		}
		// 初始化viper
		v := viper.New()
		v.SetConfigFile(configFile)
		v.SetConfigType("yaml")
		if err := v.ReadInConfig(); err != nil {
			panic(fmt.Errorf("read config failed: %s \n", err))
		}
		var config RocketMQConfig
		err := v.Unmarshal(&config, func(dc *mapstructure.DecoderConfig) {
			dc.TagName = "yaml"
		})
		if err != nil {
			panic(fmt.Errorf("unmarshal config failed: %s \n", err))
		} else {
			return &config
		}
	} else {
		// 返回基本配置
		return nil
	}
}

// FileIsExist 判断文件是否存在
func FileIsExist(file string) bool {
	var isExist = true
	if _, err := os.Stat(file); err != nil {
		if os.IsNotExist(err) {
			// file does not exist
			isExist = false
		} else {
			// other error
			isExist = false
		}
	}
	return isExist
}
